// 3. 通过配偶babel, 使得nodejs默认的CommonJS环境下, 也能用import进行express导入
// (es6规范喔) 根目录创建[.babelrc]文件+配置, 才能正常使用并运行==
import express from 'express'
import config from './config' // 6.2 全局导入config配置文件
import queryString from 'querystring' // 10.1同步
import bodyParser from './middleware/body-parse' // 10.同步2
import indexRouter from './routes/index' // 15.2 引入首页模块
import advertRouter from './routes/advert' // 15.3 引入广告管理模块
import errLog from './middleware/error_log'
// import router from './router' // 9.2 引入路由配置

const nunjucks = require('nunjucks') // 7. 配置使用 nunjucks 模板引擎

// 1. 安装express依赖包: npm i --save-dev express
// 细节1: 确定不会进行“二次更改”了, 则用 const 关键字进行声明~~~
// const express = require('express')
const app = express()

// 6.7 加载[node_modules]中静态资源中间件:
app.use('/node_modules', express.static(config.node_modules_path))
// 6.end 给整体 express 项目根目录的public型文件, 给其配置对应的解析路径:
app.use('/public', express.static(config.public_path))

// // 6.4 给 express 设置上模板引擎, 让views视图组件都渲染出来:
// app.set('views', config.viewPath)
// app.set('view engine', 'ejs')
// app.get('/', (req, res) => {
//   // 6.5 测试渲染首页
//   res.render('index')
// })

// npm install nunjucks --save
// 7.1 nunjucks 模板引擎使用:
nunjucks.configure('views', {
  autoescape: true,
  express: app,
  noCache: true, // 17.8 (开发时)禁用 nunjucks 默认自带的缓存效果, 以免每次修改静态资源, 不能及时显示...
})
// app.get('/', (req, res) => {
//   res.render('index.html')
// })

// 10. 挂载解析处理表单 POST 请求体中间件:
// 👉这步对应 '/advert/add' (表单POST请求)
app.use(bodyParser)

// // 9.end 挂载路由容器 (路由容器组织了 ->网站功能处理路由中间件)
// app.use(router)

// 15.end(改良) 挂载路由容器
app.use(indexRouter)
app.use(advertRouter)

// 18. 全局统一处理错误
// 挂载全局错误处理中间件
app.use(errLog)

const port = 8848
app.listen(port, () => {
  console.log(`Server is running on http://127.0.0.1:${port}`)
})
